package org.hfy.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.hfy.dto.warehouse.InventoryQueryDTO;
import org.hfy.entity.Inventory;

import java.util.List;

/**
 * 库存管理Mapper接口
 * 
 * @author hfy
 * @version 1.0
 */
@Mapper
public interface InventoryMapper extends BaseMapper<Inventory> {

    /**
     * 分页查询库存列表
     * 
     * @param page 分页对象
     * @param queryDTO 查询条件
     * @return 库存列表
     */
    IPage<Inventory> selectInventoryPage(Page<Inventory> page, @Param("query") InventoryQueryDTO queryDTO);

    /**
     * 根据厂内编号查询库存
     * 
     * @param factoryNo 厂内编号
     * @return 库存信息
     */
    Inventory selectByFactoryNo(@Param("factoryNo") String factoryNo);

    /**
     * 查询低库存物料
     * 
     * @return 低库存物料列表
     */
    List<Inventory> selectLowStockItems();

    /**
     * 更新库存数量
     * 
     * @param factoryNo 厂内编号
     * @param inboundQuantity 入库数量增量
     * @param outboundQuantity 出库数量增量
     */
    void updateStockQuantity(@Param("factoryNo") String factoryNo, 
                           @Param("inboundQuantity") Integer inboundQuantity, 
                           @Param("outboundQuantity") Integer outboundQuantity);
} 